home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / sync / Sync.man < prev   
Text File  |  1988-12-30  |  3KB  |  69 lines

  1. ' $Header: /sprite/src/lib/c/sync/RCS/Sync.man,v 1.1 88/12/30 16:07:18 ouster Exp $ SPRITE (Berkeley)
  2. .so \*(]ltmac.sprite
  3. .HS Sync lib 
  4. .BS
  5. .SH NAME
  6. Sync \- Synchronization overview
  7. .SH SYNOPSIS
  8. This section provides an overview of the Sprite \fBSync_\fR system routines.
  9. .BE
  10. .SH DESCRIPTION
  11. .PP
  12. Sprite provides system calls to allow processes to synchronize execution using
  13. Mesa-style monitors.
  14. .PP
  15. The following set of macros are used to emulate monitored
  16. procedures of Mesa.  The \fBLOCK_MONITOR\fR and \fBUNLOCK_MONITOR\fR macros 
  17. depend on a constant \fBLOCKPTR\fR.  \fBLOCKPTR\fR should be defined 
  18. as the address of the lock variable used to lock the monitor.  
  19. Something like the following two lines of code should appear 
  20. at the beginning of a file of monitored procedures.
  21. .nf
  22.  
  23.     #include <sync.h>
  24.  
  25.     Sync_Lock modMonitorLock;
  26.     #define LOCKPTR (&modMonitorLock)
  27.  
  28. .fi
  29. The pseudo-keywords \fBINTERNAL\fR and \fBENTRY\fR denote internal and entry
  30. procedures of a monitor.  \fBINTERNAL\fR procedures can only be called
  31. when the monitor lock is held.  \fBENTRY\fR procedures are procedures
  32. that acquire the lock.  There may also be External procedures.
  33. They are the default and there is no special keyword.  An External
  34. procedure doesn't explicitly acquire the monitor lock, but may
  35. call an \fBENTRY\fR procedure.
  36.  
  37. .PP
  38. Condition variables represent events that are associated with locks.
  39. The operations on a condition variable are \fBSync_Wait\fR and \fBSync_Broadcast\fR. 
  40. \fBSync_Wait\fR allows a process to wait for a particular monitor condition to occur.
  41. \fBSync_Broadcast\fR wakes up all processes waiting on a particular condition.  
  42. The lock must be acquired before a call to these routines is made.
  43. The lock is released while a process waits on a
  44. condition, and is then re-acquired when the condition is notified
  45. via \fBSync_Broadcast\fR.
  46. .\"An event is an integer value that is used to distinguish waiting processes:
  47. .\"a process that invokes Sync_SlowWait with a particular value will be 
  48. .\"awakened when another process calls Sync_Broadcast with the same value.
  49. .\"Addresses of data structures are commonly used as event values.
  50. .\"For example, to wait for data to arrive in a queue a process
  51. .\"could wait on the address of the queue structure;  when data
  52. .\"arrives, the process placing data in the queue could call
  53. .\"Sync_Broadcast with the same address.
  54. .PP
  55. \fBSync_Broadcast\fR is the only mechanism for awakening waiting
  56. processes.  For example, there is no means to notify only a single process
  57. awaiting a particular condition.  If several processes are awaiting the
  58. availability of a single shared resource, all processes awaiting the condition
  59. must be notified; they must each recheck for the availability
  60. of the resource, and all but one will find the resource unavailable
  61. and wait again.
  62. .PP
  63. \fBSync_WaitTime\fR is used to cause the process to sleep for a specific
  64. amount of time. The process will be woken up if a signal arrives.
  65. .SH "SEE ALSO"
  66. Sync_Broadcast, Sync_Wait, Sync_WaitTime
  67. .SH KEYWORDS
  68. synchronization, wait, block, process, event, wakeup, broadcast
  69.